草庐IT

c++ - std::byte 的用例

全部标签

c++ - 如果新大小小于或等于旧大小,标准是否保证 std::string::resize 不会重新分配内存?

我需要经常将字符串设为空,然后在其中添加一些字符。std::string::clear()可能重新分配std::string::resize(0)是否重新分配?标准的话并没有引起任何注意。 最佳答案 我认为最好的答案是http://en.cppreference.com/w/cpp/string/basic_string/clear的“注释”部分.Unlikeforstd::vector::clear,theC++standarddoesnotexplicitlyrequirethatcapacityisunchangedbythi

c++ - 声音分析库?

已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提出有关书籍、工具、软件库等方面的建议的问题。您可以编辑问题,以便用事实和引用来回答它。关闭4年前。Improvethisquestion我有兴趣了解使用着色器的音频可视化。我想制作一个可以从音频进行可视化的应用程序。我正在寻找一个可以为我提供可能对可视化有用的音频数据的库。有人知道任何可以给我这种信息的c/c++库吗?(可能是波峰和波谷,或频率等)。谢谢 最佳答案 使用FMOD库TheFMODLibraryLink用这个,看看this可

c++ - 如何将 C++ 文件链接到 C 程序?

我目前正在尝试将一个大型C++程序链接到一个C“包装器”,以允许与另一种语言的程序集成,该语言的编译器理解C而不是C++(准确地说是HaskellGHC。)但是我尝试这样做,无论是使用GHC还是GCC,都会遇到奇怪的问题。为了简洁地模拟这种情况,假设我在C中有一个主程序文件:cmain.c#include"header.h"#includeintmain(){printf("%d\n",cppfun(12));return0;}以及在.cpp文件中定义的辅助函数:cpp模块.cpp#include"header.h"#include"further.h"classfoobar{publ

c++ - 来自 std::string 的 std::istringstream 而无需复制

我一直在用这个:ifstreamin("file.txt")stringline;getline(in,line);istringstreamiss(line);...进行一些简单的解析。我想避免不必要的复制以提高性能,所以我尝试了:ifstreamin("huge_line.txt");stringline;getline(in,line);istringstreamss;ss.rdbuf()->pubsetbuf(const_cast(line.c_str()),line.size());...它似乎可以完成这项工作(即显着提高性能)。我的问题是,给定const_cast这样安全吗

c++ - Python C API - 创建关键字

我在尝试从我的C++代码调用Python函数时遇到了麻烦。我正在尝试使用以下参数调用Django函数call_command:call_command('test',stdout=content)参见here为什么。这将运行没有stdout=content参数的命令:PyObject_CallFunctionObjArgs(executeFunc,PyString_FromString("test"),NULL)我这辈子都想不出如何创建这个关键字。PyDict_New();PyDict_SetItemString(...);给我一​​个'stdout'='content'字符串,而不是

c++ - 全局 const 变量的 G++ 名称修饰

有人可以帮助我理解gcc名称修改约定吗?考虑下面的测试代码#includeconstintx=42;inty=42;intmain(intargc,constchar*argv[]){return0;}运行nm时,我得到以下(令人惊讶?)结果:0000000000000000Tmain0000000000000000Dy0000000000000000r_ZL1x这表明编译器只会破坏位于只读部分的全局变量。我希望编译器要么破坏所有全局变量,要么不破坏全局变量这是有意为之的行为吗?对我来说,它看起来不一致。 最佳答案 Mangling

c++ - 找出(在 C++ 中)二进制数是否是另一个的前缀

我需要一个带有这样标题的函数:boolis_prefix(inta,intb,int*c){//...}如果a是,读取为二进制数字字符串,b的前缀,然后将*c设置为b的其余部分(即“b比a多”)并返回true。否则,返回假。假设二进制字符串总是以“1”开头。当然-通过逐位比较很容易做到(左移b直到b==a)。但是有没有更有效的解决方案,无需迭代位?示例:a=100(4),b=1001(9)。现在将*c设置为1。 最佳答案 可以用自己喜欢的"fast"methodtofindthehighestsetbit.让我们调用函数msb()。

c++ - 如何将 64 位地址的 std::string 表示形式转换为 uint64_t?

我有一个std::string表示一个64位内存地址,采用little-endian,十六进制形式。如何将其转换为uint64_t表示形式? 最佳答案 #include#include#include#include#includeintmain(){std::strings("0x12345");std::stringstreamstrm(s);std::uint64_tn;strm>>std::hex>>n;std::cout这会按预期打印12345。编辑:如果你想从小端转换为大端,那也是可能的:#include#include

c++ - OpenCV 错误 : Sizes of input arguments do not match (The operation is neither 'array op array' )

我正在做一个在树莓派上使用opencv的项目。我遇到了一个看起来很简单的障碍,但我无法解决问题。首先,这是我的代码的一部分:{gray=cvarrToMat(py);///cvShowImage("camcvWin",py);//displayonlygraychannelif(img_num%2==1){cv::imwrite("/home/pi/test/Gray_2Image1.jpg",gray);}elseif(img_num%2==0){cv::imwrite("/home/pi/test/Gray_2Image2.jpg",gray);cv::Matimg2=cv::im

c++ - 如何完全管理 std 容器(如 map)的堆内存分配?

我对使用多个stdmap很感兴趣,我希望它们都从一个公共(public)内存池中分配元素。根据我目前所读的内容,我可以使用自定义分配器(例如Boostpool_alloc)来实现这一点。我的问题是,尽管使用Boostpool_alloc之类的东西来管理元素本身的分配,stdmap是否仍会使用少量堆内存作为某种形式的容器开销,boostpool_alloc不会管理这些开销?我在考虑关于使用标准映射本身的指向元素的指针? 最佳答案 精简版map类型,例如:typedefstd::map,boost::pool_allocator>>AM